package edu.uoc.tdp.client.conexio;

import edu.uoc.tdp.beans.conexio.*;
import edu.uoc.tdp.beans.informes.Universitat;
import edu.uoc.tdp.beans.proves.Prova;
import edu.uoc.tdp.common.*;
import java.rmi.RemoteException;
import java.sql.Date;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Grup TDP 1X4J
 */
public class PantallaGestioUsuaris extends javax.swing.JFrame {

    private RemotConexioInterface serveiRMIConnexio;
    private RemotEstudiantsInterface serveiRMIEstudiants;
    private Administrador usuAdmin;
    private PantallaCercaUsuaris PantallaCerca;
    private PantallaVisioProves PantallaProves;
    private PantallaMissatge PantMissatge;
    private Usuari usuActiu;

    private Administrador AdminW;
    private ResponsableEvents REventsW;
    private Estudiant EstudW;

    private int estatMant;

    /**
     * Creates new form PantallaGestioUsuaris
     */
    public PantallaGestioUsuaris(Administrador Admin,
                                 RemotConexioInterface serveiRMIConnexio,
                                 RemotEstudiantsInterface serveiRMIEstudiants) {

        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages");
        initComponents();
        usuAdmin = Admin;
        usuActiu = null;
        this.serveiRMIConnexio   = serveiRMIConnexio;
        this.serveiRMIEstudiants = serveiRMIEstudiants;

        // Fem la gestió de sortida de la finestra nosaltres
        this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        
        this.setLocationRelativeTo(null);
        
        setTitle(TDSLanguageUtils.getMessage("titol.general") + " - " +
                 TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.titol"));
        jMenuArxiu.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.mnuArxiu"));
        jMenuSortir.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.mnuSortir"));
        jMenuEdicio.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.mnuEdicio"));
        jMenuCercar.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.mnuCercar"));
        jMenuNou.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.mnuNou"));
        jMenuModificar.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.mnuModificar"));
        jMenuGuardar.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.mnuGuardar"));
        jMenuBorrar.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.mnuBorrar"));

        jBotoCercar.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.btnCercar"));
        jBotoNou.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.btnNou"));
        jBotoModificar.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.btnModificar"));
        jBotoGuardar.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.btnGuardar"));
        jBotoBorrar.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.btnBorrar"));
        jBotoSortir.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.btnSortir"));
        jBotoProves.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.btnProves"));

        jLabIdentificador.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtIdentif"));
        jLabTipusDoc.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtTipusDoc"));
        jLabDocument.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtDocument"));
        jLabNom.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtNom"));
        jLabCognoms.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtCognoms"));
        jLabFuncio.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtFuncio"));
        jLabUsuari.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtUsuari"));
        jLabPwd1.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtPwd1"));
        jLabPwd2.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtPwd2"));
        jLabCorreuE.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtCorreuE"));
        jLabUniversitat.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtUniv"));

        jComboTipusDoc.removeAllItems();
        jComboFuncio.removeAllItems();
        for (int i = 0; i <= 2; i++) {
            jComboTipusDoc.addItem(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.cmbTipDoc.op" + i));
            jComboFuncio.addItem(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.cmbFuncio.op" + i));
        }

        jComboUniversitat.removeAllItems();
        for (Universitat u : Universitat.values()) {
            jComboUniversitat.addItem(u.getDescripcio());
        }

        jLabEstat.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtEstat"));
        jRadioBActiu.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.rbtnActiu"));
        jRadioBBloquejat.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.rbtnBloquejat"));
        
        jLabDataCreacio.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtDataCre"));
        jLabDataModificacio.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtDataMod"));
        jLabDataBorrat.setText(TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.txtDataBor"));
        
        estatMant = EOlympicsHelper.ESTAT_MANT_INICIAL;

        ActivaControlsSegonsEstat();
        InicialitzaFitxa();
        jComboTipusDoc.setSelectedIndex(-1);  // Amagar valors Combo
        jComboFuncio.setSelectedIndex(-1);  // Amagar valors del Combo
        jComboUniversitat.setSelectedIndex(-1); // Amagar valors del combo

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jBotoNou = new javax.swing.JButton();
        jBotoModificar = new javax.swing.JButton();
        jBotoCercar = new javax.swing.JButton();
        jBotoGuardar = new javax.swing.JButton();
        jBotoBorrar = new javax.swing.JButton();
        jBotoSortir = new javax.swing.JButton();
        jPanellFitxa = new javax.swing.JPanel();
        jLabIdentificador = new javax.swing.JLabel();
        jLabTipusDoc = new javax.swing.JLabel();
        jLabDocument = new javax.swing.JLabel();
        jTextIdentificador = new javax.swing.JTextField();
        jComboTipusDoc = new javax.swing.JComboBox();
        jTextDocument = new javax.swing.JTextField();
        jLabNom = new javax.swing.JLabel();
        jLabCognoms = new javax.swing.JLabel();
        jTextNom = new javax.swing.JTextField();
        jTextCognoms = new javax.swing.JTextField();
        jLabFuncio = new javax.swing.JLabel();
        jComboFuncio = new javax.swing.JComboBox();
        jLabUsuari = new javax.swing.JLabel();
        jTextUsuari = new javax.swing.JTextField();
        jLabPwd1 = new javax.swing.JLabel();
        jLabPwd2 = new javax.swing.JLabel();
        jLabCorreuE = new javax.swing.JLabel();
        jLabUniversitat = new javax.swing.JLabel();
        jTextCorreuE = new javax.swing.JTextField();
        jTextPwd1 = new javax.swing.JPasswordField();
        jTextPwd2 = new javax.swing.JPasswordField();
        jComboUniversitat = new javax.swing.JComboBox();
        jBotoProves = new javax.swing.JButton();
        jLabEstat = new javax.swing.JLabel();
        jLabDataCreacio = new javax.swing.JLabel();
        jRadioBActiu = new javax.swing.JRadioButton();
        jRadioBBloquejat = new javax.swing.JRadioButton();
        jTextDataCreacio = new javax.swing.JTextField();
        jLabDataModificacio = new javax.swing.JLabel();
        jTextDataModificacio = new javax.swing.JTextField();
        jLabDataBorrat = new javax.swing.JLabel();
        jTextDataBorrat = new javax.swing.JTextField();
        jBarraMenu = new javax.swing.JMenuBar();
        jMenuArxiu = new javax.swing.JMenu();
        jMenuSortir = new javax.swing.JMenuItem();
        jMenuEdicio = new javax.swing.JMenu();
        jMenuCercar = new javax.swing.JMenuItem();
        jMenuNou = new javax.swing.JMenuItem();
        jMenuModificar = new javax.swing.JMenuItem();
        jMenuGuardar = new javax.swing.JMenuItem();
        jMenuBorrar = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jBotoNou.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/BotoNou.png"))); // NOI18N
        jBotoNou.setText("Nou");
        jBotoNou.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jBotoNou.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jBotoNou.setMaximumSize(new java.awt.Dimension(60, 60));
        jBotoNou.setMinimumSize(new java.awt.Dimension(60, 60));
        jBotoNou.setNextFocusableComponent(jBotoModificar);
        jBotoNou.setPreferredSize(new java.awt.Dimension(60, 60));
        jBotoNou.setRequestFocusEnabled(false);
        jBotoNou.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jBotoNou.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBotoNouActionPerformed(evt);
            }
        });

        jBotoModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/BotoModificar.png"))); // NOI18N
        jBotoModificar.setText("Modificar");
        jBotoModificar.setEnabled(false);
        jBotoModificar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jBotoModificar.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jBotoModificar.setMaximumSize(new java.awt.Dimension(60, 60));
        jBotoModificar.setMinimumSize(new java.awt.Dimension(60, 60));
        jBotoModificar.setNextFocusableComponent(jBotoGuardar);
        jBotoModificar.setPreferredSize(new java.awt.Dimension(60, 60));
        jBotoModificar.setRequestFocusEnabled(false);
        jBotoModificar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jBotoModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBotoModificarActionPerformed(evt);
            }
        });

        jBotoCercar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/BotoCercar.png"))); // NOI18N
        jBotoCercar.setText("Cercar");
        jBotoCercar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jBotoCercar.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jBotoCercar.setMaximumSize(new java.awt.Dimension(60, 60));
        jBotoCercar.setMinimumSize(new java.awt.Dimension(60, 60));
        jBotoCercar.setNextFocusableComponent(jBotoNou);
        jBotoCercar.setPreferredSize(new java.awt.Dimension(60, 60));
        jBotoCercar.setRequestFocusEnabled(false);
        jBotoCercar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jBotoCercar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBotoCercarActionPerformed(evt);
            }
        });

        jBotoGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/BotoGuardar.png"))); // NOI18N
        jBotoGuardar.setText("Guardar");
        jBotoGuardar.setEnabled(false);
        jBotoGuardar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jBotoGuardar.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jBotoGuardar.setMaximumSize(new java.awt.Dimension(60, 60));
        jBotoGuardar.setMinimumSize(new java.awt.Dimension(60, 60));
        jBotoGuardar.setNextFocusableComponent(jBotoBorrar);
        jBotoGuardar.setPreferredSize(new java.awt.Dimension(60, 60));
        jBotoGuardar.setRequestFocusEnabled(false);
        jBotoGuardar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jBotoGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBotoGuardarActionPerformed(evt);
            }
        });

        jBotoBorrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/BotoBorrar.png"))); // NOI18N
        jBotoBorrar.setText("Borrar");
        jBotoBorrar.setEnabled(false);
        jBotoBorrar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jBotoBorrar.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jBotoBorrar.setMaximumSize(new java.awt.Dimension(60, 60));
        jBotoBorrar.setMinimumSize(new java.awt.Dimension(60, 60));
        jBotoBorrar.setNextFocusableComponent(jBotoProves);
        jBotoBorrar.setPreferredSize(new java.awt.Dimension(60, 60));
        jBotoBorrar.setRequestFocusEnabled(false);
        jBotoBorrar.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jBotoBorrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBotoBorrarActionPerformed(evt);
            }
        });

        jBotoSortir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/BotoSortir.png"))); // NOI18N
        jBotoSortir.setText("Sortir");
        jBotoSortir.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jBotoSortir.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jBotoSortir.setMaximumSize(new java.awt.Dimension(60, 60));
        jBotoSortir.setMinimumSize(new java.awt.Dimension(60, 60));
        jBotoSortir.setNextFocusableComponent(jBotoCercar);
        jBotoSortir.setPreferredSize(new java.awt.Dimension(60, 60));
        jBotoSortir.setRequestFocusEnabled(false);
        jBotoSortir.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jBotoSortir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBotoSortirActionPerformed(evt);
            }
        });

        jPanellFitxa.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabIdentificador.setLabelFor(jTextIdentificador);
        jLabIdentificador.setText("Identificador");

        jLabTipusDoc.setLabelFor(jComboTipusDoc);
        jLabTipusDoc.setText("Tipus Document");

        jLabDocument.setLabelFor(jTextDocument);
        jLabDocument.setText("Document");

        jTextIdentificador.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextIdentificador.setText("1");
        jTextIdentificador.setEnabled(false);

        jComboTipusDoc.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboTipusDoc.setEnabled(false);
        jComboTipusDoc.setNextFocusableComponent(jTextDocument);

        jTextDocument.setEditable(false);
        jTextDocument.setNextFocusableComponent(jTextNom);

        jLabNom.setLabelFor(jTextNom);
        jLabNom.setText("Nom");

        jLabCognoms.setLabelFor(jTextCognoms);
        jLabCognoms.setText("Cognoms");

        jTextNom.setEditable(false);
        jTextNom.setNextFocusableComponent(jTextCognoms);

        jTextCognoms.setEditable(false);
        jTextCognoms.setNextFocusableComponent(jComboFuncio);

        jLabFuncio.setLabelFor(jComboFuncio);
        jLabFuncio.setText("Funció");

        jComboFuncio.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboFuncio.setEnabled(false);
        jComboFuncio.setNextFocusableComponent(jTextUsuari);
        jComboFuncio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboFuncioActionPerformed(evt);
            }
        });

        jLabUsuari.setLabelFor(jTextUsuari);
        jLabUsuari.setText("Usuari");

        jTextUsuari.setEditable(false);
        jTextUsuari.setNextFocusableComponent(jTextPwd1);

        jLabPwd1.setLabelFor(jTextPwd1);
        jLabPwd1.setText("Contrassenya");

        jLabPwd2.setLabelFor(jTextPwd2);
        jLabPwd2.setText("Verificar Contrassenya");

        jLabCorreuE.setLabelFor(jTextCorreuE);
        jLabCorreuE.setText("Correu Electrònic");

        jLabUniversitat.setLabelFor(jComboUniversitat);
        jLabUniversitat.setText("Universitat");

        jTextCorreuE.setEditable(false);
        jTextCorreuE.setNextFocusableComponent(jComboUniversitat);

        jTextPwd1.setEditable(false);
        jTextPwd1.setToolTipText("");
        jTextPwd1.setNextFocusableComponent(jTextPwd2);

        jTextPwd2.setEditable(false);
        jTextPwd2.setToolTipText("");
        jTextPwd2.setNextFocusableComponent(jTextCorreuE);

        jComboUniversitat.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboUniversitat.setSelectedIndex(-1);
        jComboUniversitat.setNextFocusableComponent(jRadioBActiu);

        javax.swing.GroupLayout jPanellFitxaLayout = new javax.swing.GroupLayout(jPanellFitxa);
        jPanellFitxa.setLayout(jPanellFitxaLayout);
        jPanellFitxaLayout.setHorizontalGroup(
            jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanellFitxaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabIdentificador)
                    .addComponent(jLabTipusDoc)
                    .addComponent(jLabDocument)
                    .addComponent(jLabNom)
                    .addComponent(jLabCognoms)
                    .addComponent(jLabFuncio)
                    .addComponent(jLabUsuari)
                    .addComponent(jLabPwd1)
                    .addComponent(jLabCorreuE)
                    .addComponent(jLabUniversitat)
                    .addComponent(jLabPwd2))
                .addGap(24, 24, 24)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextCognoms)
                    .addComponent(jTextNom)
                    .addComponent(jComboUniversitat, 0, 234, Short.MAX_VALUE)
                    .addComponent(jTextCorreuE)
                    .addGroup(jPanellFitxaLayout.createSequentialGroup()
                        .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jTextPwd2, javax.swing.GroupLayout.DEFAULT_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jComboFuncio, javax.swing.GroupLayout.PREFERRED_SIZE, 175, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addComponent(jTextPwd1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 127, Short.MAX_VALUE)
                                .addComponent(jTextUsuari, javax.swing.GroupLayout.Alignment.LEADING))
                            .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addComponent(jTextIdentificador, javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jComboTipusDoc, javax.swing.GroupLayout.Alignment.LEADING, 0, 92, Short.MAX_VALUE)
                                .addComponent(jTextDocument, javax.swing.GroupLayout.Alignment.LEADING)))
                        .addGap(0, 59, Short.MAX_VALUE)))
                .addContainerGap())
        );
        jPanellFitxaLayout.setVerticalGroup(
            jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanellFitxaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabIdentificador)
                    .addComponent(jTextIdentificador, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabTipusDoc)
                    .addComponent(jComboTipusDoc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabDocument)
                    .addComponent(jTextDocument, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(29, 29, 29)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabNom)
                    .addComponent(jTextNom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabCognoms)
                    .addComponent(jTextCognoms, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabFuncio)
                    .addComponent(jComboFuncio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabUsuari)
                    .addComponent(jTextUsuari, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(8, 8, 8)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabPwd1)
                    .addComponent(jTextPwd1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(9, 9, 9)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabPwd2)
                    .addComponent(jTextPwd2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(20, 20, 20)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabCorreuE)
                    .addComponent(jTextCorreuE, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanellFitxaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabUniversitat)
                    .addComponent(jComboUniversitat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(14, Short.MAX_VALUE))
        );

        jBotoProves.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/BotoProves.png"))); // NOI18N
        jBotoProves.setText("Proves");
        jBotoProves.setEnabled(false);
        jBotoProves.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jBotoProves.setMargin(new java.awt.Insets(2, 2, 2, 2));
        jBotoProves.setMaximumSize(new java.awt.Dimension(60, 60));
        jBotoProves.setMinimumSize(new java.awt.Dimension(60, 60));
        jBotoProves.setNextFocusableComponent(jComboTipusDoc);
        jBotoProves.setPreferredSize(new java.awt.Dimension(60, 60));
        jBotoProves.setRequestFocusEnabled(false);
        jBotoProves.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jBotoProves.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBotoProvesActionPerformed(evt);
            }
        });

        jLabEstat.setText("Estat");

        jLabDataCreacio.setText("Data creació");

        jRadioBActiu.setSelected(true);
        jRadioBActiu.setText("Actiu");
        jRadioBActiu.setEnabled(false);
        jRadioBActiu.setNextFocusableComponent(jRadioBBloquejat);
        jRadioBActiu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioBActiuActionPerformed(evt);
            }
        });

        jRadioBBloquejat.setText("Bloquejat");
        jRadioBBloquejat.setEnabled(false);
        jRadioBBloquejat.setNextFocusableComponent(jBotoSortir);
        jRadioBBloquejat.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioBBloquejatActionPerformed(evt);
            }
        });

        jTextDataCreacio.setEditable(false);

        jLabDataModificacio.setText("Data Modificació");

        jTextDataModificacio.setEditable(false);

        jLabDataBorrat.setText("Data Borrat");

        jTextDataBorrat.setEditable(false);

        jMenuArxiu.setText("Arxiu");

        jMenuSortir.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
        jMenuSortir.setText("Sortir");
        jMenuSortir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuSortirActionPerformed(evt);
            }
        });
        jMenuArxiu.add(jMenuSortir);

        jBarraMenu.add(jMenuArxiu);

        jMenuEdicio.setText("Edició");

        jMenuCercar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.CTRL_MASK));
        jMenuCercar.setText("Cercar");
        jMenuCercar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuCercarActionPerformed(evt);
            }
        });
        jMenuEdicio.add(jMenuCercar);

        jMenuNou.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
        jMenuNou.setText("Nou");
        jMenuNou.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuNouActionPerformed(evt);
            }
        });
        jMenuEdicio.add(jMenuNou);

        jMenuModificar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_M, java.awt.event.InputEvent.CTRL_MASK));
        jMenuModificar.setText("Modificar");
        jMenuModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuModificarActionPerformed(evt);
            }
        });
        jMenuEdicio.add(jMenuModificar);

        jMenuGuardar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK));
        jMenuGuardar.setText("Guardar");
        jMenuGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuGuardarActionPerformed(evt);
            }
        });
        jMenuEdicio.add(jMenuGuardar);

        jMenuBorrar.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.CTRL_MASK));
        jMenuBorrar.setText("Borrar");
        jMenuBorrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuBorrarActionPerformed(evt);
            }
        });
        jMenuEdicio.add(jMenuBorrar);

        jBarraMenu.add(jMenuEdicio);

        setJMenuBar(jBarraMenu);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jBotoCercar, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jBotoNou, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jBotoModificar, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jBotoGuardar, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jBotoBorrar, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jBotoProves, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE)
                        .addComponent(jBotoSortir, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanellFitxa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(27, 27, 27)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jTextDataModificacio)
                            .addComponent(jTextDataCreacio)
                            .addComponent(jLabDataModificacio, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jTextDataBorrat)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jLabEstat)
                                    .addComponent(jRadioBActiu)
                                    .addComponent(jRadioBBloquejat)
                                    .addComponent(jLabDataCreacio)
                                    .addComponent(jLabDataBorrat))
                                .addGap(0, 0, Short.MAX_VALUE)))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jBotoSortir, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jBotoBorrar, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jBotoGuardar, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jBotoCercar, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jBotoModificar, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jBotoNou, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jBotoProves, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanellFitxa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabEstat)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jRadioBActiu)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jRadioBBloquejat)
                        .addGap(53, 53, 53)
                        .addComponent(jLabDataCreacio)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextDataCreacio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabDataModificacio)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextDataModificacio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabDataBorrat)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextDataBorrat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jMenuCercarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuCercarActionPerformed
        gestionaCerca();
    }//GEN-LAST:event_jMenuCercarActionPerformed

    private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
        if (gestionaSortida()) {
            dispose();
        }
    }//GEN-LAST:event_formWindowClosing

    private void jBotoCercarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBotoCercarActionPerformed
        gestionaCerca();
    }//GEN-LAST:event_jBotoCercarActionPerformed

    private void jMenuSortirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuSortirActionPerformed
        if (gestionaSortida()) {
            dispose();
        }
    }//GEN-LAST:event_jMenuSortirActionPerformed

    private void jBotoSortirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBotoSortirActionPerformed
        if (gestionaSortida()) {
            dispose();
        }
    }//GEN-LAST:event_jBotoSortirActionPerformed

    private void jMenuNouActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuNouActionPerformed
        gestionaAlta();
    }//GEN-LAST:event_jMenuNouActionPerformed

    private void jBotoNouActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBotoNouActionPerformed
        gestionaAlta();
    }//GEN-LAST:event_jBotoNouActionPerformed

    private void jMenuModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuModificarActionPerformed
        gestionaModificacio();
    }//GEN-LAST:event_jMenuModificarActionPerformed

    private void jBotoModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBotoModificarActionPerformed
        gestionaModificacio();
    }//GEN-LAST:event_jBotoModificarActionPerformed

    private void jBotoGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBotoGuardarActionPerformed
        gestionaGuardat();
    }//GEN-LAST:event_jBotoGuardarActionPerformed

    private void jMenuGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuGuardarActionPerformed
        gestionaGuardat();
    }//GEN-LAST:event_jMenuGuardarActionPerformed

    private void jMenuBorrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuBorrarActionPerformed
        gestionaBaixa();
    }//GEN-LAST:event_jMenuBorrarActionPerformed

    private void jBotoBorrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBotoBorrarActionPerformed
        gestionaBaixa();
    }//GEN-LAST:event_jBotoBorrarActionPerformed

    private void jBotoProvesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBotoProvesActionPerformed
        try {
            PantallaProves = new PantallaVisioProves(this, true, usuActiu, serveiRMIEstudiants);
            PantallaProves.setVisible(true);
        } catch (EOlympicsException ex) {
            JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("ERR_CRIDAPROVES"), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jBotoProvesActionPerformed

    private void jRadioBActiuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioBActiuActionPerformed
        jRadioBBloquejat.setSelected(!jRadioBActiu.isSelected());
    }//GEN-LAST:event_jRadioBActiuActionPerformed

    private void jRadioBBloquejatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioBBloquejatActionPerformed
        jRadioBActiu.setSelected(!jRadioBBloquejat.isSelected());
    }//GEN-LAST:event_jRadioBBloquejatActionPerformed

    private void jComboFuncioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboFuncioActionPerformed
        jComboUniversitat.setEnabled(jComboFuncio.getSelectedIndex() == 0);
        if (jComboUniversitat.isEnabled()) {
            jComboUniversitat.setSelectedIndex(0);
        } else {
            jComboUniversitat.setSelectedIndex(-1);
        }
    }//GEN-LAST:event_jComboFuncioActionPerformed

    // Controlarà l'actiavació dels controls de la pantalla segons l'estat
    private void ActivaControlsSegonsEstat() {

        boolean FitxaModificable = (estatMant == EOlympicsHelper.ESTAT_MANT_CONSULTA &&
                                    usuActiu != null &&
                                    usuActiu.getDataEsborrat() == null);

        // Cercar : Només actiu a l'inici o si s'està en consulta.
        jMenuCercar.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_INICIAL |
                               estatMant == EOlympicsHelper.ESTAT_MANT_CONSULTA);
        jBotoCercar.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_INICIAL |
                               estatMant == EOlympicsHelper.ESTAT_MANT_CONSULTA);

        // Nou : Només actiu a l'inici o si s'està en consulta.
        jMenuNou.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_INICIAL |
                            estatMant == EOlympicsHelper.ESTAT_MANT_CONSULTA);
        jBotoNou.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_INICIAL |
                            estatMant == EOlympicsHelper.ESTAT_MANT_CONSULTA);

        // Modificar : Només actiu quan estem consultant.
        jMenuModificar.setEnabled(FitxaModificable);
        jBotoModificar.setEnabled(FitxaModificable);

        // Guardar : Actiu quan estem donant d'alta o modificant
        jMenuGuardar.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_ALTA |
                                estatMant == EOlympicsHelper.ESTAT_MANT_MODIFICACIO);
        jBotoGuardar.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_ALTA |
                                estatMant == EOlympicsHelper.ESTAT_MANT_MODIFICACIO);

        // Borrar : Actiu quan estem en una consulta.
        jMenuBorrar.setEnabled(FitxaModificable);
        jBotoBorrar.setEnabled(FitxaModificable);

        // Visualitzar proves : Només Actiu quan estem en una consulta d'un estudiant.
        jBotoProves.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_CONSULTA &&
                               jComboFuncio.getSelectedIndex() == 0);

        // Sortir : Actiu si no estem donant de baixa
        jMenuSortir.setEnabled(estatMant != EOlympicsHelper.ESTAT_MANT_BAIXA);
        jBotoSortir.setEnabled(estatMant != EOlympicsHelper.ESTAT_MANT_BAIXA);

        jComboTipusDoc.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_ALTA
                | estatMant == EOlympicsHelper.ESTAT_MANT_MODIFICACIO);
        // A partir del primer control d'edició ens basem per a habilitar la resta
        jTextDocument.setEditable(jComboTipusDoc.isEnabled());
        jTextNom.setEditable(jComboTipusDoc.isEnabled());
        jTextCognoms.setEditable(jComboTipusDoc.isEnabled());
        // Es considera que no es pot canviar la funció d'un Usuari un cop creat.
        jComboFuncio.setEnabled(estatMant == EOlympicsHelper.ESTAT_MANT_ALTA);
        jTextUsuari.setEditable(jComboTipusDoc.isEnabled());
        jTextPwd1.setEditable(jComboTipusDoc.isEnabled());
        jTextPwd2.setEditable(jComboTipusDoc.isEnabled());
        jTextCorreuE.setEditable(jComboTipusDoc.isEnabled());
        // Combo només actiu pels estudiants
        jComboUniversitat.setEnabled(jComboTipusDoc.isEnabled()
                && jComboFuncio.getSelectedIndex() == 0);

        jRadioBActiu.setEnabled(jComboTipusDoc.isEnabled());
        jRadioBBloquejat.setEnabled(jComboTipusDoc.isEnabled());

    }

    // Posar tots els controls de la pantalla al seu valor inicial
    private void InicialitzaFitxa() {


        jTextIdentificador.setText("");
        
        if (jComboTipusDoc.isEnabled()) {
            jComboTipusDoc.setSelectedIndex(0);
        }

        jTextDocument.setText("");
        jTextNom.setText("");
        jTextCognoms.setText("");
        if (jComboFuncio.isEnabled()) {
            jComboFuncio.setSelectedIndex(0);
        }
        jTextUsuari.setText("");
        jTextPwd1.setText("");
        jTextPwd2.setText("");
        jTextCorreuE.setText("");
        jComboUniversitat.setEnabled(jComboFuncio.isEnabled()
                && jComboFuncio.getSelectedIndex() == 0);
        jComboUniversitat.setSelectedIndex(0);

        jRadioBActiu.setSelected(true);
        jRadioBBloquejat.setSelected(false);
        
        jTextDataCreacio.setText("");
        jTextDataModificacio.setText("");
        jTextDataBorrat.setText("");

}

    // Abans de sortir de la finestra cal veure si volem guardar l'alta o la modificació
    private boolean gestionaSortida() {
        boolean ok;
        if (estatMant == EOlympicsHelper.ESTAT_MANT_ALTA) {
            PantMissatge = new PantallaMissatge(this, true,
                    TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.AltaGravar"),
                    TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.NoGraCanvis"));
            PantMissatge.setVisible(true);
            ok = (PantMissatge.getReturnStatus() == EOlympicsHelper.RET_OK);
        } else if (estatMant == EOlympicsHelper.ESTAT_MANT_MODIFICACIO) {
            PantMissatge = new PantallaMissatge(this, true,
                    TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.ModifGravar"),
                    TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.NoGraCanvis"));
            PantMissatge.setVisible(true);
            ok = (PantMissatge.getReturnStatus() == EOlympicsHelper.RET_OK);
        } else {
            ok = true;
        }
        return ok;
    }

    // Procés de cerques en pantalla modal.
    private void gestionaCerca() { //{throws RemoteException, EOlympicsException {

        try {

            if (PantallaCerca == null) {
                PantallaCerca = new PantallaCercaUsuaris(this, true, serveiRMIConnexio);
            } else {
                PantallaCerca.setRefrescar(true);
            }

            PantallaCerca.setVisible(true);
            usuActiu = PantallaCerca.getUsuariTriat();

            if (usuActiu != null) {
                // Carregar usuari a pantalla i deixar en estat de consulta

                EstudW = serveiRMIConnexio.getEstudiant(usuActiu.getIdIntern());
                if (null == EstudW) {
                    REventsW = serveiRMIConnexio.getResponsableEvents(usuActiu.getIdIntern());
                    if (null == REventsW) {
                        AdminW = serveiRMIConnexio.getAdministrador(usuActiu.getIdIntern());
                    }
                }

                if (null == AdminW && null == REventsW && null == EstudW) {
                    // Error d'inconsistència a la Base de Dades (Usuaris)
                    JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("ERR_BD_CORRUPTA"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                } else {

                    jTextIdentificador.setText(Integer.toString(usuActiu.getIdIntern()));
                    
                    for (int i = 0; i < jComboTipusDoc.getItemCount(); i++) {
                        if (jComboTipusDoc.getItemAt(i).toString().equals(usuActiu.getTipusDocumentId())) {
                            jComboTipusDoc.setSelectedIndex(i);
                            break;
                        }
                    }
                    
                    jTextDocument.setText(usuActiu.getDocument());
                    jTextNom.setText(usuActiu.getNom());
                    jTextCognoms.setText(usuActiu.getCognom1() + " " + usuActiu.getCognom2());
                    if (EstudW != null) {
                        jComboFuncio.setSelectedIndex(0);
                    } else if (REventsW != null) {
                        jComboFuncio.setSelectedIndex(1);
                    } else {
                        jComboFuncio.setSelectedIndex(2);
                    }

                    jTextUsuari.setText(usuActiu.getIdUsuari());
                    jTextPwd1.setText(usuActiu.getPwd());
                    jTextPwd2.setText(usuActiu.getPwd());
                    jTextCorreuE.setText(usuActiu.getEmail());
                    jComboUniversitat.setEnabled(jComboFuncio.getSelectedIndex() == 0);
                    if (EstudW == null) {
                        jComboUniversitat.setSelectedIndex(-1);
                    } else {
                        for (int i = 0; i < jComboUniversitat.getItemCount(); i++) {
                            if (jComboUniversitat.getItemAt(i).toString().equals(EstudW.getUniversitat())) {
                                jComboUniversitat.setSelectedIndex(i);
                                break;
                            }
                        }
                    }

                    jRadioBActiu.setSelected("A".equals(usuActiu.getEstatEnSistema()));
                    jRadioBBloquejat.setSelected("B".equals(usuActiu.getEstatEnSistema()));

                    jTextDataCreacio.setText(EOlympicsUtils.getStringDate(usuActiu.getDataCreacio()));
                    jTextDataModificacio.setText(EOlympicsUtils.getStringDate(usuActiu.getDataModificacio()));
                    jTextDataBorrat.setText(EOlympicsUtils.getStringDate(usuActiu.getDataEsborrat()));

                    estatMant = EOlympicsHelper.ESTAT_MANT_CONSULTA;
                    ActivaControlsSegonsEstat();
                }

                jBotoSortir.requestFocus();
            }

        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("ERR_REMOT_CERCAUSU"), "Error", JOptionPane.ERROR_MESSAGE);
        } catch (EOlympicsException ex) {
            JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("ERR_CERCAUSU"), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    // Procés d'alta
    private void gestionaAlta() {
        estatMant = EOlympicsHelper.ESTAT_MANT_ALTA;
        ActivaControlsSegonsEstat();
        InicialitzaFitxa();
        jComboTipusDoc.requestFocus();
    }

    // Procés de modificació
    private void gestionaModificacio() {
        estatMant = EOlympicsHelper.ESTAT_MANT_MODIFICACIO;
        ActivaControlsSegonsEstat();
        jComboTipusDoc.requestFocus();
    }

    // Procés de guardar dades de la fitxa de l'usuari (Alta o Modificació)
    private boolean gestionaGuardat() {
        boolean ok = true;
        int idUsu;
        NIF NifUsu;
        
        try {
            
            /*
             * Controlar :
             * 
             * Altes i modificacions :
             * 
             * - Nº document no repetit
             * - Identificador repetit
             * - NIF o NIE correcte
             * - tots els camps amb valor.
             * 
             */

            if (estatMant == EOlympicsHelper.ESTAT_MANT_ALTA) {
                idUsu = 0;
            } else {
                idUsu = Integer.parseInt(jTextIdentificador.getText());
            }
                
            if (ok && jTextNom.getText().isEmpty()) {
                    // Cal introduir el Nom de l'Usuari
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.faltaNom"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextNom.requestFocus();
            }
            
            if (ok && jTextCognoms.getText().isEmpty()) {
                    // Cal introduir els Cognoms de l'Usuari
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.faltaCognoms"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextCognoms.requestFocus();
            }
            
            if (ok && jTextUsuari.getText().isEmpty()) {
                    // Cal introduir un Identificador d'Usuari
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.faltaIdent"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextUsuari.requestFocus();
            }
            
            if (ok && jTextPwd1.getText().isEmpty()) {
                    // Cal introduir una Contrassenya d'Usuari
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.faltaPwd1"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextPwd1.requestFocus();
            }
            
            if (ok && jTextPwd2.getText().isEmpty()) {
                    // Cal introduir la Verificació de la Contrassenya d'Usuari
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.faltaPwd2"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextPwd2.requestFocus();
            }
            
            if (ok && jTextCorreuE.getText().isEmpty()) {
                    // Cal introduir el Correu Electrònic de l'Usuari
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.faltaCorreuE"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextCorreuE.requestFocus();
            }
            
            if (ok && !jTextPwd1.getText().equals(jTextPwd2.getText())) {
                    // Cal que la Contrassenya i la Verificació de Contrassenya siguin iguales
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.PwdNoIguals"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextPwd2.requestFocus();
            }
            
            if (ok && jComboTipusDoc.getSelectedIndex() == 0) {
                NifUsu = new NIF(jTextDocument.getText());
                if (NifUsu.getNIF().isEmpty()) {
                    // Usuari amb NIF incorrecte.
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.NifIncorr"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextDocument.requestFocus();
                }
            }

            if (ok && 
                serveiRMIConnexio.esIdentificadorRepetit(jTextUsuari.getText(), idUsu)) {
                    // Aquest Identificador d'Usuari ja és utilitzat per un altre Usuari
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.IdentRepe"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextUsuari.requestFocus();
            }
            
            if (ok && 
                serveiRMIConnexio.esDocumentRepetit(jTextDocument.getText(), idUsu)) {
                    // Hi ha un altre usuari que fa servir aquest mateix número de document
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.DocumRepe"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                    jTextDocument.requestFocus();
            }
            
            if (ok == true) {
                
                String LletraEstat;
                if (jRadioBActiu.isSelected()) {
                    LletraEstat = "A";
                } else {
                    LletraEstat = "B";
                }
                
                String [ ] cognoms = jTextCognoms.getText().split("\\ ");
                String cognom1 = "";
                String cognom2 = "";
                
                if (cognoms.length >= 2) {
                  cognom1 = cognoms[0];  
                  cognom2 = cognoms[1];  
                } else if (cognoms.length == 1) {
                  cognom1 = cognoms[0];  
                }

                if (usuActiu == null) {
                    usuActiu = new Usuari(idUsu,
                            jTextUsuari.getText(),
                            jTextPwd1.getText(),
                            jTextCorreuE.getText(),
                            EOlympicsHelper.TIPUS_ID[jComboTipusDoc.getSelectedIndex()], jTextDocument.getText(),
                            jTextNom.getText(),
                            cognom1,
                            cognom2,
                            LletraEstat);
                } else {

                    usuActiu.setIdIntern(idUsu);
                    usuActiu.setTipusDocumentId(EOlympicsHelper.TIPUS_ID[jComboTipusDoc.getSelectedIndex()]);
                    usuActiu.setDocument(jTextDocument.getText());
                    usuActiu.setNom(jTextNom.getText());
                    usuActiu.setCognom1(cognom1);
                    usuActiu.setCognom2(cognom2);

                    usuActiu.setIdUsuari(jTextUsuari.getText());
                    usuActiu.setPwd(jTextPwd1.getText());
                    usuActiu.setEmail(jTextCorreuE.getText());
                    usuActiu.setEstatEnSistema(LletraEstat);
                }

                if (estatMant == EOlympicsHelper.ESTAT_MANT_ALTA) {
                    if (jComboFuncio.getSelectedIndex() == 0) {
                        serveiRMIConnexio.setAltaEstudiant(usuActiu,
                                jComboUniversitat.getItemAt(jComboUniversitat.getSelectedIndex()).toString(),
                                usuAdmin.getIdIntern());
                    } else if (jComboFuncio.getSelectedIndex() == 1) {
                        serveiRMIConnexio.setAltaResponsableEvents(usuActiu, usuAdmin.getIdIntern());
                    } else {
                        serveiRMIConnexio.setAltaAdministrador(usuActiu, usuAdmin.getIdIntern());

                    }
                    // Refrescar número intern de l'usuari i data de creació
                    usuActiu = serveiRMIConnexio.getUsuari(usuActiu.getIdUsuari(), usuActiu.getPwd());
                    jTextIdentificador.setText(Integer.toString(usuActiu.getIdIntern()));
                    jTextDataCreacio.setText(EOlympicsUtils.getStringDate(usuActiu.getDataCreacio()));
                } else if (estatMant == EOlympicsHelper.ESTAT_MANT_MODIFICACIO) {
                    if (jComboFuncio.getSelectedIndex() == 0) {
                        serveiRMIConnexio.setUpdateEstudiant(usuActiu,
                                jComboUniversitat.getItemAt(jComboUniversitat.getSelectedIndex()).toString(),
                                usuAdmin.getIdIntern());
                    } else {
                        serveiRMIConnexio.setUpdateUsuari(usuActiu, usuAdmin.getIdIntern());
                    }
                    Date avui = new Date(System.currentTimeMillis());
                    jTextDataModificacio.setText(EOlympicsUtils.getStringDate(avui));
                }

                ok = true;

                // Fitxa de l'usuari .... guardada correctament 
                JOptionPane.showMessageDialog(null,
                        TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.fitxaUsu") + " "
                        + usuActiu.getCognom1() + " " + usuActiu.getCognom2() + ", " + usuActiu.getNom() + " "
                        + TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.fitxaGuar"),
                        TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.usuGuardat"),
                        JOptionPane.INFORMATION_MESSAGE);

                estatMant = EOlympicsHelper.ESTAT_MANT_CONSULTA;
                ActivaControlsSegonsEstat();
                jBotoSortir.requestFocus();
            }
            
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("ERR_REMOT_GUARDAUSU"), "Error", JOptionPane.ERROR_MESSAGE);
        } catch (EOlympicsException ex) {
            JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("ERR_GUARDAUSU"), "Error", JOptionPane.ERROR_MESSAGE);
        }

        return ok;
    }

    private void gestionaBaixa() {
        boolean ok = true;
        try {
            
            /*
             * Controlar :
             * 
             * - No borrar mateix usuari administrador amb que hem entrat
             * - En cas d'estudiant, que no estigui inscrit a cap prova.
             * 
             */
            
            if (jComboFuncio.getSelectedIndex() == 2) {
               if (usuAdmin.getIdIntern() == usuActiu.getIdIntern()) {
                    // L'Administrador no pot BORRAR-SE a si mateix
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.NoBorrAdm"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
               }
            }
            
            if (jComboFuncio.getSelectedIndex() == 0) {
                List<Prova> inscripcions =
                        serveiRMIEstudiants.ProvesAmbInscripcio(usuActiu.getIdIntern());
                if (!inscripcions.isEmpty()) {
                    // L'Estudiant no es pot BORRAR per estar inscrit a una o diverses proves
                    JOptionPane.showMessageDialog(null, 
                            TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.NoBorrEst"),
                            "Error", JOptionPane.ERROR_MESSAGE);
                    ok = false;
                }
            }


            if (ok == true) {

                PantMissatge = new PantallaMissatge(this, true, "",
                        TDSLanguageUtils.getMessage("connexio.pantalla.mantusu.missatge.BorrarUsu"));
                PantMissatge.setVisible(true);
                if (PantMissatge.getReturnStatus() == EOlympicsHelper.RET_OK) {
                    serveiRMIConnexio.setBorratUsuari(usuActiu.getIdIntern(), usuAdmin.getIdIntern());
                    estatMant = EOlympicsHelper.ESTAT_MANT_INICIAL;
                    ActivaControlsSegonsEstat();
                    InicialitzaFitxa();
                    jComboTipusDoc.setSelectedIndex(-1);    // Amagar valors Combo
                    jComboFuncio.setSelectedIndex(-1);      // Amagar valors del Combo
                    jComboUniversitat.setSelectedIndex(-1); // Amagar valors del combo
                    jBotoSortir.requestFocus();
                }
            }
        } catch (RemoteException ex) {
            JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("ERR_REMOT_BORRAUSU"), "Error", JOptionPane.ERROR_MESSAGE);
        } catch (EOlympicsException ex) {
            JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("ERR_BORRAUSU"), "Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuBar jBarraMenu;
    private javax.swing.JButton jBotoBorrar;
    private javax.swing.JButton jBotoCercar;
    private javax.swing.JButton jBotoGuardar;
    private javax.swing.JButton jBotoModificar;
    private javax.swing.JButton jBotoNou;
    private javax.swing.JButton jBotoProves;
    private javax.swing.JButton jBotoSortir;
    private javax.swing.JComboBox jComboFuncio;
    private javax.swing.JComboBox jComboTipusDoc;
    private javax.swing.JComboBox jComboUniversitat;
    private javax.swing.JLabel jLabCognoms;
    private javax.swing.JLabel jLabCorreuE;
    private javax.swing.JLabel jLabDataBorrat;
    private javax.swing.JLabel jLabDataCreacio;
    private javax.swing.JLabel jLabDataModificacio;
    private javax.swing.JLabel jLabDocument;
    private javax.swing.JLabel jLabEstat;
    private javax.swing.JLabel jLabFuncio;
    private javax.swing.JLabel jLabIdentificador;
    private javax.swing.JLabel jLabNom;
    private javax.swing.JLabel jLabPwd1;
    private javax.swing.JLabel jLabPwd2;
    private javax.swing.JLabel jLabTipusDoc;
    private javax.swing.JLabel jLabUniversitat;
    private javax.swing.JLabel jLabUsuari;
    private javax.swing.JMenu jMenuArxiu;
    private javax.swing.JMenuItem jMenuBorrar;
    private javax.swing.JMenuItem jMenuCercar;
    private javax.swing.JMenu jMenuEdicio;
    private javax.swing.JMenuItem jMenuGuardar;
    private javax.swing.JMenuItem jMenuModificar;
    private javax.swing.JMenuItem jMenuNou;
    private javax.swing.JMenuItem jMenuSortir;
    private javax.swing.JPanel jPanellFitxa;
    private javax.swing.JRadioButton jRadioBActiu;
    private javax.swing.JRadioButton jRadioBBloquejat;
    private javax.swing.JTextField jTextCognoms;
    private javax.swing.JTextField jTextCorreuE;
    private javax.swing.JTextField jTextDataBorrat;
    private javax.swing.JTextField jTextDataCreacio;
    private javax.swing.JTextField jTextDataModificacio;
    private javax.swing.JTextField jTextDocument;
    private javax.swing.JTextField jTextIdentificador;
    private javax.swing.JTextField jTextNom;
    private javax.swing.JPasswordField jTextPwd1;
    private javax.swing.JPasswordField jTextPwd2;
    private javax.swing.JTextField jTextUsuari;
    // End of variables declaration//GEN-END:variables
}
